//package com.xinheyun.demo.leetcode;
//
//import java.util.ArrayDeque;
//import java.util.Deque;
//import java.util.HashMap;
//import java.util.concurrent.atomic.AtomicBoolean;
//
///**
// * @description: TODO
// * @author: Sarah
// * @modified By: Sarah
// * @date: Created in 2021/8/23 16:53
// * @version:v1.0
// */
//
////给你一个字符串 s 、一个字符串 t 。返回 s 中涵盖 t 所有字符的最小子串。如果 s 中不存在涵盖 t 所有字符的子串，则返回空字符串 "" 。
////
////     
////
////    注意：
////
////    对于 t 中重复字符，我们寻找的子字符串中该字符数量必须不少于 t 中该字符数量。
////    如果 s 中存在这样的子串，我们保证它是唯一的答案。
////     
////
////    示例 1：
////
////    输入：s = "ADOBECODEBANC", t = "ABC"
////    输出："BANC"
////    示例 2：
////
////    来源：力扣（LeetCode）
////    链接：https://leetcode-cn.com/problems/minimum-window-substring
////    著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
//public class test76 {
//
//    HashMap<Character, Integer> map = new HashMap<>();
//
//    public String minWindow(String s, String t) {
//
////        HashMap<Character, Integer> map = new HashMap<>();
//        final char[] ss = s.toCharArray();
//        final char[] ts = t.toCharArray();
//
//        for (int i = 0; i < ts.length; i++) {
//            if (map.containsKey(ts[i])) {
//                map.put(ts[i], map.get(ts[i]) + 1);
//            } else {
//                map.put(ts[i], 1);
//            }
//        }
//        int low = 0, high = 0;
//        int min= Integer.MAX_VALUE;
//        Deque<Character> queue = new ArrayDeque<>();
//        for (int i = 0; i < ss.length; i++) {
//            queue.add(ss[i]);
//            if (map.containsKey(ss[i])) {
//                map.put(ss[i], map.get(ss[i]) - 1);
//            }
//            while (check()) {
//                Character remove = queue.remove();
//                if (map.containsKey(remove)) {
//                    map.put(ss[i], map.get(ss[i]) + 1);
//                }
//                if(min>queue.size()){
//                    min=queue.size();
//                }
//                low = i-queue.size();
//            }
//
//        }
//
//
//    }
//
//    private boolean check() {
//        AtomicBoolean flag = new AtomicBoolean(true);
//        map.forEach((key, value) -> {
//            if (value > 0) {
//                flag.set(false);
//            }
//        });
//        return flag.get();
//    }
//
//
//}
